package com.softeem.yqst_server.controller;

import com.softeem.yqst_server.dto.Result;
import com.softeem.yqst_server.entity.Music;
import com.softeem.yqst_server.service.MusicService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
@RequestMapping("/music")   //命名空间(namespace)
@RestController
public class MusicController {
//完成以下有关音乐资源的管理功能
//1. 音乐添加
//2. 音乐列表查询
//3. 音乐删除(根据ID)
//4. 根据音乐名称模糊查询
//5. 根据ID修改音乐信息
//6. 根据ID查询音乐详情
    @Autowired
    private MusicService musicService;

    // 音乐添加
    @PostMapping("/add")
    public Result addMusic(@RequestBody Music music) {
        musicService.save(music);
        return Result.ok().setMsg("音乐添加成功");
    }

    // 音乐列表查询
    @GetMapping("/list")
    public Result listMusic() {
        List<Music> musicList = musicService.list();
        return Result.ok().setData(musicList);
    }

    // 音乐删除(根据ID)
    @DeleteMapping("/delete/{id}")
    public Result deleteMusic(@PathVariable Integer id) {
        musicService.removeById(id);
        return Result.ok().setMsg("音乐删除成功");
    }

    // 根据音乐名称模糊查询
    @GetMapping("/search")
    public Result searchMusic(@RequestParam String keyword) {
        List<Music> musicList = musicService.searchMusicByName(keyword);
        return Result.ok().setData(musicList);
    }

    // 根据ID修改音乐信息
    @PutMapping("/update/{id}")
    public Result updateMusic(@PathVariable Integer id, @RequestBody Music music) {
        music.setId(id);
        musicService.updateById(music);
        return Result.ok().setMsg("音乐信息更新成功");
    }

    // 根据ID查询音乐详情
    @GetMapping("/detail/{id}")
    public Result getMusicDetail(@PathVariable Integer id) {
        Music music = musicService.getById(id);
        return Result.ok().setData(music);
    }

}
/*
*
@PostMapping("/add"): 用于处理添加音乐的 POST 请求，接收一个 Music 对象。
@GetMapping("/list"): 用于处理查询所有音乐的 GET 请求，返回音乐列表。
@DeleteMapping("/delete/{id}"): 用于处理根据 ID 删除音乐的 DELETE 请求，接收路径变量 id。
@GetMapping("/search"): 用于处理根据音乐名称模糊查询的 GET 请求，接收查询关键词 keyword。
@PutMapping("/update/{id}"): 用于处理根据 ID 修改音乐信息的 PUT 请求，接收路径变量 id 和请求体中的 Music 对象。
@GetMapping("/detail/{id}"): 用于处理根据 ID 查询音乐详情的 GET 请求，接收路径变量 id。

 */